package com.ssy.lingxi.purchase.service.purchaseplan;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.purchase.api.dto.request.*;
import com.ssy.lingxi.purchase.api.dto.response.PurchasePlanListResponse;
import com.ssy.lingxi.purchase.api.dto.response.PurchasePlanResponse;
import com.ssy.lingxi.purchase.entity.purchaseplan.PurchasePlanDetail;

import java.util.List;
import java.util.Map;

/**
 * 采购能力 - 采购计划管理 - 业务处理类
 * @author fhj
 * @date 2021/02/26
 * @version 2.0.0
 * */
public interface PurchasePlanService {

    Wrapper<List<Map<String, Object>>> inner();

    Wrapper<PageData<PurchasePlanListResponse>> allList(PurchasePlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PageData<PurchasePlanListResponse>> toBeSubmitExamList(PurchasePlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PageData<PurchasePlanListResponse>> toBeFirstExamList(PurchasePlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PageData<PurchasePlanListResponse>> toBeSecondExamList(PurchasePlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PageData<PurchasePlanListResponse>> toBeExecuteList(PurchasePlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PurchasePlanResponse> details(CommonIdRequest dto, UserLoginCacheDTO user);

    Wrapper<PageData<PurchasePlanDetail>> purchasePlanDetail(CommonIdPageRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> update(UpdatePurchasePlanRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> delete(CommonIdRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> submitExam(CommonIdRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> firstExam(CommonExamRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> secondExam(CommonExamRequest dto, UserLoginCacheDTO user);

    void execute();
}
